package partida.estados
{
	// ========================================================================
	import flash.events.KeyboardEvent;
	import flash.ui.Keyboard;
	
	import kapi.API;
	
	import nivel.Nivel;
	
	import partida.Estado;
	import partida.Partida;
	// ========================================================================

	public class Juego implements Estado
	{
		// ====================================================================
		private var _nivel:Nivel
		// ====================================================================

		// ====================================================================
		// PROEPRTIES
		// ====================================================================

		// --------------------------------------------------------------------
		public function get nombre():String { return 'JUEGO' }

		// ====================================================================
		// FUNCIONES
		// ====================================================================

		// --------------------------------------------------------------------
		public function entrar(_partida:Partida):void
		{
			crearJuego()

			/***DEBUG***/
			function salir(evento:KeyboardEvent):void {
				if (evento.keyCode == Keyboard.ESCAPE)
				{
					API.stage.removeEventListener(KeyboardEvent.KEY_DOWN, salir)
					_partida.mostrarMenu()
				}
			}
			API.stage.addEventListener(KeyboardEvent.KEY_DOWN, salir)
			/***DEBUG***/
		}
		// --------------------------------------------------------------------
		private function crearJuego():void
		{
			_nivel = new Nivel()
			_nivel.avanzar()
			mostrarMundoActual()
			crearJugador()
		}
		// --------------------------------------------------------------------
		private function mostrarMundoActual():void
		{
			_nivel.mundo.y = 0
			_nivel.mundo.x = 0
			API.root.addChild(_nivel.mundo)
		}
		// --------------------------------------------------------------------
		private function crearJugador():void
		{
			/*
			var _bola:Bola = new Bola()
			var _controlador:Controlador = new Controlador(_bola)
			_bola.posicionar(new Point(100, -500))
			_bola.incluirEn(Nivel.mundo)
			*/
		}
		
		// --------------------------------------------------------------------
		private function crearActores():void
		{
			/*
			var bola:Bola = new Bola()
			bola.posicionar(new Point(200, -120))
			var vista:actores.bola.Vista = new actores.bola.Vista(bola)
			vista.agregarAlContenedor()
			var controlador:actores.bola.Controlador = new actores.bola.Controlador(bola)
			actorPrincipal = new MVC(bola, vista, controlador)
			mundoActual.agregarMVC(actorPrincipal)
			*/
		}
		// --------------------------------------------------------------------
		private function destruirMundo():void
		{
			API.root.removeChild(_nivel.mundo)
		}
		// --------------------------------------------------------------------
		public function salir():void
		{
			destruirMundo()
		}
		// --------------------------------------------------------------------
		public function destruir():void
		{
			trace('llamando a juego.destruir')			
		}
	}
}